Apex Sharing Rules এবং Security Considerations Salesforce-এ ডেটা সুরক্ষার জন্য গুরুত্বপূর্ণ। Sharing Rules Apex কোডে ব্যবহারকারীর রোল, প্রোফাইল, এবং নির্দিষ্ট শেয়ারিং নিয়ম অনুযায়ী রেকর্ডের অ্যাক্সেস নিয়ন্ত্রণ করে, যা নিশ্চিত করে যে ব্যবহারকারী শুধুমাত্র অনুমোদিত ডেটা দেখতে ও অ্যাক্সেস করতে পারবে। Apex ক্লাসে শেয়ারিং নিয়মগুলো ব্যবহারের সময় নিরাপত্তার বিষয়গুলো বিবেচনা করা গুরুত্বপূর্ণ।
Sharing Rules Apex কোডে নির্দিষ্ট রেকর্ড বা ডেটার উপর অ্যাক্সেস নিয়ন্ত্রণ করতে সহায়ক। Apex ক্লাসে With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করে শেয়ারিং নিয়ম মেনে চলা বা এড়ানো সম্ভব হয়।
With Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম মেনে চলা নিশ্চিত করা হয়, যা ব্যবহারকারীর নির্ধারিত শেয়ারিং নিয়ম এবং রোল ভিত্তিক অ্যাক্সেস সীমাবদ্ধতা অনুযায়ী ডেটা ফিল্টার করে।
public with sharing class AccountService {
public List<Account> getAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Without Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম এড়িয়ে যাওয়া হয়, যা ক্লাসকে সমস্ত রেকর্ডে অ্যাক্সেস দেয়। এটি সাধারণত তখন ব্যবহার করা হয়, যখন অ্যাডমিনিস্ট্রেটিভ কাজ বা রেকর্ড ফিল্টারিং প্রয়োজন হয় না।
public without sharing class AdminService {
public List<Account> getAllAccounts() {
return [SELECT Id, Name FROM Account];
}
}
Apex কোডের নিরাপত্তা নিশ্চিত করতে বিভিন্ন Security Considerations মেনে চলা উচিত, যাতে ডেটা সুরক্ষা নিশ্চিত হয় এবং ইনজেকশন বা ডেটা লিক প্রতিরোধ করা যায়।
প্রতিটি SOQL এবং DML অপারেশনের আগে Object-Level এবং Field-Level Security যাচাই করা উচিত, যাতে ব্যবহারকারীর অনুমোদিত ডেটা ছাড়া অন্য ডেটা অ্যাক্সেস না হয়।
public class AccountService {
public void updateAccountName(Account acc) {
if (Schema.sObjectType.Account.isUpdateable() && Schema.sObjectType.Account.fields.Name.isUpdateable()) {
update acc;
} else {
throw new CustomException('Insufficient permissions to update Account Name.');
}
}
}
SOQL ইনজেকশন প্রতিরোধ করতে ইনপুট স্যানিটাইজেশন এবং Bind Variables ব্যবহার করা উচিত। ইনপুট সরাসরি SOQL স্টেটমেন্টে যুক্ত না করে, Bind Variables ব্যবহার করা সুরক্ষিত।
public class AccountQuery {
public List<Account> getAccounts(String accountName) {
String sanitizedAccountName = String.escapeSingleQuotes(accountName);
return [SELECT Id, Name FROM Account WHERE Name = :sanitizedAccountName];
}
}
CRUD Permissions যাচাই করা নিশ্চিত করে যে ব্যবহারকারী নির্দিষ্ট অবজেক্ট বা ফিল্ডে অ্যাক্সেস অনুমোদিত কি না। Apex কোডে CRUD অনুমতি যাচাই করতে isCreateable()
, isUpdateable()
, isDeletable()
, এবং isAccessible()
মেথড ব্যবহার করা হয়।
public class AccountCRUD {
public void deleteAccount(Account acc) {
if (Schema.sObjectType.Account.isDeletable()) {
delete acc;
} else {
throw new CustomException('Insufficient permissions to delete Account.');
}
}
}
Exception Handling এবং যথাযথ Logging সিস্টেম ব্যবহার করে নিশ্চিত করুন যে নিরাপত্তা লঙ্ঘন, ইনজেকশন অ্যাটাক বা ডেটা লিক সনাক্ত করা সহজ হয়।
public class AccountService {
public List<Account> getAccounts() {
try {
return [SELECT Id, Name FROM Account];
} catch (Exception e) {
System.debug('Error: ' + e.getMessage());
throw new CustomException('Unable to retrieve Accounts.');
}
}
}
with sharing ব্যবহার করুন: যতটা সম্ভব with sharing
ব্যবহার করুন এবং শুধুমাত্র প্রয়োজন হলে without sharing
ব্যবহার করুন।
CRUD এবং Field-Level Security যাচাই করুন: প্রতিটি DML এবং SOQL অপারেশনের আগে CRUD এবং Field-Level Security যাচাই করা উচিত।
Input Sanitization নিশ্চিত করুন: ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন নিশ্চিত করে ইনজেকশন প্রতিরোধ করুন।
Exception Handling এবং Logging: কোডের প্রতিটি গুরুত্বপূর্ণ অংশে Exception Handling এবং যথাযথ Logging নিশ্চিত করুন।
Custom Permissions ব্যবহার করুন: কাস্টম পারমিশন ব্যবহার করে নির্দিষ্ট ফিচারের জন্য ব্যবহারকারীর অ্যাক্সেস নিয়ন্ত্রণ করুন।
Minimal Permissions: প্রোফাইল এবং পারমিশন সেটে ন্যূনতম প্রয়োজনীয় পারমিশন প্রদান করুন।
Apex Sharing Rules ব্যবহারকারীর জন্য নির্দিষ্ট ডেটা এক্সেস নিয়ন্ত্রণ করতে সহায়ক। With Sharing এবং Without Sharing কিওয়ার্ড ব্যবহার করে Apex ক্লাসে শেয়ারিং নিয়ম মেনে চলা বা এড়ানো যায়। একই সাথে, Object-Level, Field-Level, এবং Record-Level Security যাচাই, SOQL ইনজেকশন প্রতিরোধ, এবং CRUD এবং ফিল্ড পারমিশন যাচাই করার মাধ্যমে Apex কোডের নিরাপত্তা নিশ্চিত করা যায়। Proper Exception Handling এবং Logging ব্যবস্থা যুক্ত করে ডেটা সুরক্ষা এবং নির্ভরযোগ্যতা বজায় রাখা সম্ভব।
এই নিরাপত্তা নিয়মগুলো মেনে চলে Salesforce অ্যাপ্লিকেশনকে আরও নিরাপদ ও নির্ভরযোগ্য করে তোলা যায়।
common.read_more